Skip to content


ai  101  pytorch  classification  nvidia  cuda  install  tensorrt  yolo  ardupilot  None  ros2  dds  micro ros  xrce  sitl  plugin  SITL  debug  rangefinder  pymavlink  mavros  gazebo  distance sensor  system_time  timesync  cmake  gtest  ctest  cpp  c++  format  fmt  multithreading  spdlog  camera  coordinate system  orb  matching  opencv  build  transformation  computer vision  homography  optical flow  of  trackers  cv  cyclonedds  eprosima  fastdds  simulation  config  ignition  bridge  sdf  tips  ign-transport  sensors  lidar  aptly  apt  encryption  pgp  docker  git  bundle  github  hooks  pre-commit  lxd  container  lxc  x11  profile  vscode  marpit  presentation  marp  markdown  mermaid  video  ffmpeg  gstreamer  cheat-sheet  sdp  v4l2loopback  gi  snippets  cheat Sheet  python  asyncio  future  click  cli  numpy  project  template  black  isort  docs  project document  docstrings  flake8  linter  git-hook  mypy  unittest  pytest  pylint  mock  iterator  generator  logging  tuple  namedtuple  typing  annotation  pyzmq  zmq  msgpack  action  namespace  remap  control2  ros2_control  gdb  qos  tag  plugins  msg  node  zero-copy  shm  tutorial  algorithm  calibration  diff  pid  dev  colcon  colcon_cd  rpi  arm  qemu  settings  behavior  plot  visualization  debugging  diagnostic  diagnostics  tutorials  gst  math  apm  rat_runtime_monitor  web  rosbridge  vue  binding  discovery  gazebo-classic  launch  spawn  cook  gps  imu  ray  gazebo_ros_ray_sensor  ultrsonic  range  ultrasonic  gazebo classic  wrench  effort  odom  ign  gz  xacro  ros_ign  diff_drive  odometry  joint_state  argument  OpaqueFunction  DeclareLaunchArgument  LaunchConfiguration  tmux  nav  slam  test  rclpy  executor  MultiThreadedExecutor  SingleThreadedExecutor  param  dynamic-reconfigure  service  client  setup.py  package.xml  parameter  parameters  custom  msgs  executers  pub  sub  rqt  rviz  rviz2  pose  marker  tf2  deb  package  setup  local_setup  rosdep  package manager  project settings  vcstool  cross-compiler  nano  texture  tmuxp  rootfs  embedded  zah  linux  rm  ubuntu  ip  ss  network  netstat  snap  deploy  ssh  systemd  mkdocs  extensions  socat  networking  serial  udp  tc  mtu  select  px4  robotics  kalman_filter  kalman  filter  control  todo  vscode-ext  json  yaml  schema  yocto  poky  world  gazebo_ros2_control  position_controller  effort_controller  velocity_controller  urdf  gazebo_ros_force  gazebo_ros_joint_state_publisher  robot_state_publisher  joint_state_publisher  projects  vrx  buoyancy 

Build OpenCV with CUDA

Build OpenCV with CUDA


Build OpenCV on x64 ubuntu machine

Prerequisites#

  • install nvidia driver
  • install cudnn
  • install cmake gui
  • install all opencv dependencies
sudo apt install cmake-qt-gui
install dependencies
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential cmake unzip pkg-config
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install libv4l-dev libxvidcore-dev libx264-dev
sudo apt-get install libgtk-3-dev
sudo apt-get install libblas-dev liblapack-dev gfortran
sudo apt-get install python3-dev

Download source#

wget https://github.com/opencv/opencv/archive/4.5.5.zip
wget https://github.com/opencv/opencv_contrib/archive/4.5.5.zip

# unzip

build process#

  • set all option
  • run configure
  • run generate
  • run make -j 8 from/on build folder
  • check

config#

  • Select source and build folder

  • config python

  • dnn

  • blas

  • fast math

  • contrib

  • pkgconfig

config result#

  • show my changes
Commandline options:
-DOPENCV_EXTRA_MODULES_PATH:PATH="/home/user/opencv/opencv_contrib-4.5.5/modules" \
-DOPENCV_GENERATE_PKGCONFIG:BOOL="1" \
-DWITH_CUDA:BOOL="1" \
-DCUDA_ARCH_BIN:STRING="7.5" \
-DOPENCV_DNN_CUDA:BOOL="1" \
-DENABLE_FAST_MATH:BOOL="1" \
-DPYTHON3_EXECUTABLE:FILEPATH="/usr/bin/python3" -DBUILD_opencv_world:BOOL="1" \
-DCUDA_FAST_MATH:BOOL="1" 


Cache file:
OPENCV_EXTRA_MODULES_PATH:PATH=/home/user/opencv/opencv_contrib-4.5.5/modules
OPENCV_GENERATE_PKGCONFIG:BOOL=1
WITH_CUDA:BOOL=1
CUDA_ARCH_BIN:STRING=7.5
OPENCV_DNN_CUDA:BOOL=1
ENABLE_FAST_MATH:BOOL=1
PYTHON3_EXECUTABLE:FILEPATH=/usr/bin/python3
BUILD_opencv_world:BOOL=1
CUDA_FAST_MATH:BOOL=1

Check#

  • create new virtual env and activate
  • run setup.py from build/python_loader folder
import cv2
cv2.__version__
cv2.cuda.getCudaEnabledDeviceCount()